<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>getPrototypeOf方法</title>
</head>
<body>
  <script>
    // getPrototypeOf() 方法主要用来拦截获取对象原型。具体来说，拦截下面这些操作。
    /**
     * 1.Object.prototype.__proto__
     * 2.Object.prototype.isPrototypeOf()
     * 3.Object.getPrototypeOf()
     * 4.Reflect.getPrototypeOf()
     * 5.instanceof
    */
   var proto = {};
   var p = new Proxy({}, {
     getPrototypeOf(target) {
       return proto
     }
   });
   Object.getPrototypeOf(p) === proto // true
   // 上面代码中，getPrototypeOf()方法拦截Object.getPrototypeOf()，返回proto对象。
   // 注意： getPrototypeOf()方法的返回值必须是对象或者null,否则会报错，另外。如果目标对象不可扩展
   // getPrototypeOf()方法必须返回目标对象的原型对象
  </script>
</body>
</html>